package com.xmcc.common;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

/**
 * 肯定会有很多类需要交给spring管理 但是又不方便加注解
 * 就需要这个类来获得spring管理的对象
 */
@Component
public class ApplicationContextHelper implements ApplicationContextAware {
    private static ApplicationContext ac;
    /* 这个ApplicationContext 肯定是交给spring管理 我们只需要把当前类
    交给spring管理 spring就可以自动注入ApplicationContext对象 */
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        ac = applicationContext;
    }
    //根据接口类型获得子类，接口.class 传类的对象过来：
    public static <T> T getBean(Class<T> tClass){
        return ac.getBean(tClass);
    }
    //有多个实现类 就需要名字与类型一起匹配：
    public static <T> T getBean(String str,Class<T> tClass){
        return ac.getBean(str,tClass);
    }
}
